perm filename UUO.UPD[S,DOC]67 blob
sn#322006 filedate 1977-12-10 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00021 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00004 00002 This file contains corrections, additions and updates to the UUO Manual,
C00016 00003 25. THE NEW AD & DA CONVERTERS (JAM)
C00033 00004 26. The CORE2 UUO will take the direct (error) return if you ask it
C00041 00005 38. PDP-11 INTERFACE (19-MAY-74 -- BO)(14-apr-76)
C00048 00006 39. File protection for disk files: the "same programmer, other
C00061 00007 51. Interrupts will NOT terminate a SLEEP UUO prematurely. The
C00064 00008 58. Date75 11/11/74 updated 11/22/74
C00069 00009 59. XGP default margin settings
C00079 00010 [ALL ENTRIES BEFORE THIS HAVE BEEN INCLUDED IN UUO MANUAL, SECOND EDITION.]
C00086 00011 84. Job Data Area Symbols.
C00095 00012 104. [OBSOLETE: SEE #106]
C00101 00013 113. New line characteristics bit DMLIN, 40000,,0, means line is a Datamedia.
C00113 00014 115. PPINFO UUO--Minor changes to bits returned in word 2 of info block.
C00121 00015 130. UPGIOT UUO for Datamedia (DM) displays.
C00138 00016 131. SUPERS bit (0,,100) in fourth word of SETACT table suppresses
C00157 00017 161. Two new MTAPEs have been added for device DISK and UDP in either new or
C00165 00018 172. The following devices have been added. They are all on the PDP-6 (P3)
C00179 00019 173.
C00183 00020 [ALL ENTRIES BEFORE THIS HAVE BEEN INCLUDED IN UUO MANUAL, THIRD EDITION.]
C00184 00021 177. TTYSET function 17 (get responsible TTY) returns -1 if no TTY
C00189 ENDMK
C⊗;
This file contains corrections, additions and updates to the UUO Manual,
including new UUOs that have been added since the manual went to press.
1. The only UUO spacewar processes on the PDP-6 can issue is the
DISMIS UUO. (I think any UUO given on the 6 has the effect of DISMIS.)
2. On p. 126, the 2nd line of 1st paragraph should read "even" instead
of "ever".
3. In disk file protection key, read protection (2 bit) implies
protection protection (4 bit) for any group of users.
4. INTJEN UUO turns on bits in the interrupt mask, not in the interrupt
enablings.
5. Non-ARPA PTYs never run LOGOUT when logging out. ARPA PTYs do run
LOGOUT.
6. RENAME can be done after ENTER without doing a CLOSE first unless
the file being renamed is replacing an existing file (another file
had same name when ENTER was done). In that case a CLOSE must be
done first (which will delete the original file).
7. IOPUSH CHN,ID ;[OP=724]
<pdlov>
<channel pushed>
Pushes io channel CHN on io pdl. Channel CHN may now be used
without affecting the device you pushed. The ID is saved with
the channel for use with IOPOP and IOPDL.
8. IOPOP CHN,ID ;[OP=725]
<stack empty>
<success>
Finds first channel on stack with ID searching down from top. If
ID = 0 then uses top of stack. If not found, takes error return.
Releases channel CHN, places the device from the stack into that
channel, and compresses that entry out of the stack.
9. IOPDL N,ID ;[OP=726]
IOPDL 0,
Does IOPOP for each device on the io pdl. The channel it
uses is the same one the device was pushed from.
IOPDL 1,
Releases all devices from stack without affecting devices
not currently pushed on stack.
IOPDL 2,ID
<error return>
<device released>
Finds device with ID same as for IOPOP, then releases it
without affecting any other devices. The stack is compressed.
10. MOVE AC,[CODE,,JOB #]
GETPRV AC, ;[OP=047, ADR=400115] CALLI 400115
<always return here>
If job # illegal, uses current job.
CODE = 0
Get active privileges for job #. Return them in AC.
CODE = 1
Get passive privileges for job #. Return them in AC.
CODE = 2
Get temporary privileges for job #. Return them in AC.
11. TTYSKP CHN, ;[OP=047, ADR=400116] CALLI 400116
If no device on channel CHN, "IO TO UNASSIGNED CHANNEL" error.
If not TTY, never skip.
If TTY, will skip if next input will not hang.
12. MOVEI AC,ADDR
DIAL AC, ;[OP=047, ADR=400117] CALLI 400117
<error return, error code in AC>
<success return>
ADDR: DIALER #,,FUNCTION CODE
<any further args as needed>
Error codes:
0 Illegal dialer #.
1 Dialer in use by someone else.
2 Don't meet ownership requirements (currently, don't have TTY11
inited)
3 Attempt to dial while call in progress (should hang up first)
4 Dialing failure.
Function codes:
0 Claim dialer. Must be done before any other function can be
performed with this dialer #.
1 Get dialer status. Returns in AC:
<last interrupt coni>,,<current coni>
2 Dial a number. ADDR+1 is area code in the following format:
Bit 0 17 18 21 22 25 26 29 30 35
__________________________________________
| | | | | |
Digit | | 1 | 2 | 3 | |
|______________|_____|_____|_____|_______|
ADDR+2 is the rest of the number in this format:
Bit 0 5 6 7 8 11 12 15 16 19 20 23 24 27 28 31 32 35
_____________________________________________________
| | | | | | | | | | |
Digit | |A|V| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
|_____|_|_|_____|_____|_____|_____|_____|_____|_____|
A on, dial area code.
V on, call is "VOICE" call. Will switch to AD/DA when call
completed. Not implemented yet!
3 Hang up.
4 Release dialer (automatically done if you release TTY11).
13. LOOKUP followed by ENTER now updates date/time in UFD entry for file.
14. RUNMSK is now a no-op (may become illegal soon).
15. WHO AC, ;[OP=047, ADR=400112] CALLI 400112
AC right should contain address of 22-word block for returned asciz
string.
If AC left contains legal job #, return who line for that job as
asciz text.
If AC left = 0 or > legal job #, return who line for current job.
If AC left < 0, return system who line.
If no job for legal job #, returns null string.
16. TTYJOB AC, ;[OP=047, ADR=400113] CALLI 400113
If AC is 0 to max TTY line number, returns in AC the job # of owner.
Sign bit will be on if this is not owners "console".
If AC is -<PTY line #>, returns in AC the job # of job controlling PTY.
All other args return 0 in AC.
17. PTYs are initialized with bits 6 (PTYLIN), 10 (PTYUSE), 13 (FCS)
and 16 (XON) (4222,,0 bits) on in the line characteristics. The UUO
manual (p. 48) does not mention the FCS bit being on for a new PTY.
18. In the UUO manual on the first line of p. 148 (section 13.3), it
should say "(bit 28)" instead of "(bit 31)" (bit to set to get error
return instead of error message when LPT is hung).
19. IMP MTAPE 13 (Bless Host) is now a no-op since there is no longer
a system table of dead hosts. All hosts are assumed alive except for
an instant after the IMP network has returned a Host Dead message in
response to an attempt by us to send that host a message.
20. PPACT does erase all deactivated pieces of paper even on
Data Discs. See also note number 56 in this file.
21. When doing 8-bit byte buffered IMP output, any of the four bytes
in the last used word in any buffer can be suppressed from being
transmitted to the IMP by setting the corresponding bit of the low
order four bits of the same word. For example, if the word pointed
to by the byte pointer in your output buffer header contains
776655,,443307, then only the first (high-order) byte of this word
will be transmitted. That is,
bit 32 (0,,10 bit) suppresses the first byte (776000,,0 byte),
bit 33 (0,,4 bit) suppresses the second byte (001774,,0 byte),
bit 34 (0,,2 bit) suppresses the third byte (3,,770000 byte),
bit 35 (0,,1 bit) suppresses the fourth byte (0,,007760 byte).
22. The DEVNUM UUO is listed four times in the manual as CALLI 4000104
whereas it should really be CALLI 400104 (deleting extra zero).
23. The left half of each entry in the JOBJDA block of the job data
area contains the channel-status bits, as returned (in the right half
of an AC) by the CHNSTS UUO. However, these bits and the device data
block (DDB) address in the right half are not kept up to date by the
system. These cells are guaranteed correct only when your job is not
running; they will in general also be correct if you have not done
any I/O since the beginning of the current quantum of run time.
24. The left half of a TTY's entry in TTYTAB (see monitor pointers)
contains the number of the next TTY in the given TTY's talk ring, if
that TTY is in a talk ring; when a TTY is not in a talk ring, the
left half of its TTYTAB entry contains the TTY's own line number.
25. THE NEW AD & DA CONVERTERS (JAM)
The new analog-to-digital converter (ADC) and digital-to-analog
converter (DAC) are devices on the PDP-6's IO bus which may be
operated in dump mode (17) only. They provide input and output of
digitized waveforms conventionally representing speech, music, or
other acoustical signals.
Both the DAC and the ADC can operate in a manner such that the data
transfer UUO (INPUT, or IN, for ADC, OUTPUT, or OUT, for DAC) does
not wait for the transfer to finish before returning to the user.
This feature is enabled by the 100 bit (called CONT) in the IO status
word. In this case, the user must have three separate buffers. There
is the buffer that the device is operating on, the one that is
waiting, and the one the user is operating on. If you use just two
buffers, you may find that you are operating on the same buffer the
system is operating on. As you give data transfer UUOs, the first one
will start the transfer and return immediately. The second one will
store the IOWD and return immediately. It is not until the third one
is given that the UUO will wait. It will wait for the buffer
specified by the first UUO to become free, and start the second
buffer, before it will accept the address of the third buffer and
return.
If either the ADC or the DAC loses a sample, the LOST bit (bit 2000)
is set in the IO status word. This means a discontinuity has occured
in the signal.
The ADC can be data-triggered. By setting the CYCLE bit (bit 200) in
the IO status word, the ADC does not move beyond the first buffer,
but instead transfers continuously into the first buffer. When it
gets to the end of the first buffer, it goes back to the beginning
automatically. This process continues until a sample comes in that is
larger than some threshold (user settable). When such a sample
occurs, the system goes on to the second buffer and returns to the
user the position in the first buffer that the triggering sample
occurred. For effeciency, the compare is not made with each sample in
the word, but instead with just the high-order sample. You must be in
CONT mode to guarantee continuity between the first and second
buffers.
When the ADC in CYCLE mode goes to the second buffer, the CYCDON bit
(20 bit) is set in the IO status word. You can cause the ADC to start
cycling again by clearing this bit. This is only useful if you know
which buffer it is in. It will go into CYCLE mode on the next buffer.
The ADC and the DAC can be made to start simultaneously. This is done
by turning on the IOSYNC bit (40 bit) in the IO status words of both
devices (they are different devices, require different INITs). What
happens is that the first data transfer UUO (of either device) does
not actually start the transfer. When the first data transfer UUO for
the other device is given, then both devices will begin. Note that
either UUO (ADC or DAC) can be given first. The second UUO will start
the transfer. You must be in CONT mode for the device whose UUO is
given first, or you will not return from the UUO. The system will
only wait one minute between the two UUOs.
If you are in CYCLE mode on the ADC, and in IOSYNC mode on both
devices, you can specify that the DAC is to be started after the ADC
is advanced to the second buffer and not just at the beginning of
input. This is done by setting the IOAFT bit (bit 4000) in the ADC IO
status word. This will prevent the DAC's being started until the ADC
advances to the second buffer.
The device-specific bits of the IO status word are shown below. The
asterik represents bits that are only meaningful to the ADC.
Bits Octal Mnemonic Meaning
*24 4000 IOAFT Begin DAC only after ADC has
moved on to second buffer, i.e.
IOSYNC∧IOAFT∧CYCDON ⊃ Start DAC
25 2000 LOST Data missed
*28 200 CYCLE Causes ADC to transfer repeatedly
into the first buffer until
some input sample exceeds a
preset threshold.
29 100 CONT Causes system to return to the
user immediately from a data
transfer UUO.
30 40 IOSYNC ADC and DAC will be started
simultaneously.
*31 20 CYCDON Indicates ADC has moved from
first input buffer to the
second. Only relevant in
CYCLE mode.
To set parameters like sampling rate, channel multiplexing, and such,
the MTAPE UUO has been drafted to serve this special function. An
MTAPE to either the ADC or the DAC has as its effective address the
address of a 3-word (2-word for DAC) block which is formatted as
follows:
<*CYCLE threshold>,,<Speed*1000+Packing*100+Nchans>
<address for `RUN' flag>
<*Input select>,,<*address for CYCLE pointer>
Speed is coded as follows:
Code Clock rate (per channel!!!)
0 6.4KHz
1 12.8KHz
2 25.6KHz
3 51.2KHz (Highest ADC rate)
4 102.4KHz
5 204.8KHz
Packing is coded as follows:
Code Packing mode
0 12-bit two's complement bytes packed 3 to a word
1 18-bit two's complement bytes packed 2 to a word
2 9-bit incremental floating-point bytes packed 4 to a word
(DAC only)
Note that the 18-bit byte has only 16 significant bits for the DAC
and only 14 significant bits for the ADC. In the DAC, the low order 2
bits of each byte are ignored. In the ADC, the low order 4 bits of
each byte are set to zero.
These packing modes are diagrammed below:
12-bit mode (code 0):
____________________________________________________________
|0 11|12 23|24 35|
| SAMPLE 1 | SAMPLE 2 | SAMPLE 3 |
|___________________|__________________|___________________|
18-bit mode (code 1):
____________________________________________________________
|0 17|18 35|
| SAMPLE 1 | SAMPLE 2 |
|___________________________|______________________________|
9-bit mode (code 2, DAC only):
____________________________________________________________
|0 3|4 8|9 12|13 17|18 21|22 26|27 30|31 35|
| EX1 | MANT1 | EX2 | MANT2 | EX3 | MANT3 | EX4 | MANT4 |
|_____|_______|_____|________|_____|_______|_____|_________|
This last mode is called Incremental floating point (abbreviated IFP
mode). Each 9-bit byte is decoded into a 4 bit exponent and a 5-bit
mantissa. The mantissa is shifted left the number of places
represented by the number in the exponent and is added into the
current position of the DAC to produce the new position. The sign bit
is inferred from the mantissa, it is not explicit. The sign bit is
taken to be the complement of the high order mantissa bit, and is
spread throughout the number before the shifting occurs.
To restate, the DAC has, for each channel, a 16 bit register, called
the FLTMEM register. These registers are cleared at the beginning of
a transfer. In IFP mode, a 9-bit byte is unpacked from the input
word. The high order 4 bits of that byte go into a counter, the low
order 5 bits go into the low-order 5 bits of a 21 bit (16+5) shift
register. The complement of the high order bit of the mantissa is
stored in the high-order 16 bits of that 21-bit shift register. This
entire register is shifted left the number of places (0 to 15)
represented by the number currently in the counter (the exponent).
The high order 16 bits of this register are then added into the
FLTMEM register for this channel and the sum is stored back into the
FLTMEM register. This sum is also delivered to the DAC.
Notice that this means that a 9-bit byte with all bits zero does not
represent a change of zero in the FLTMEM register. A zero byte will
infer a sign bit of 1, which will be spread throughout the word and
will result in a word of -1. 20 is the `official' code for zero. This
has the high order bit of the mantissa on and all other bits zero.
Nchans is decoded as follows:
Code Meaning
0 unused. Currently same as 3.
1 Monaural (1-channel only)
2 Stereo (2 channels)
3 Quadraphonic (4 channels)
For multiple channels, successive samples go to successive channels.
For example, in Stereo mode (code 2), the first sample goes to
channel 1, the second sample goes to channel 2, the third sample goes
to channel 1 again, the fourth to channel 2, and so on.
In CYCLE mode for the ADC, the input is directed into the first
buffer until the high order sample in a word exceeds the threshold.
This threshold is specified in the left half of the first word of the
MTAPE block.
The right half of the second word of the MTAPE block is the address
of the `RUN' flag (may be zero to inhibit feature). When the ADC or
the DAC is started, this cell is set to -1. When the ADC or DAC is
stopped, this cell is set to 0. In this manner, one can tell when his
transfer is actually occurring. Since the ADC and the DAC are given
separate MTAPEs, they can have separate RUN flags, as well as
separate clock rates, numbers of channels, and packing modes.
The third word of the MTAPE block is only relevant to the ADC. The
right half specifies the address where the buffer pointer is to
be places in CYCLE mode. What you get is the IOWD at the point
the threshold was exceeded, relocated to a relative address within
your core image. The address part of this word (the right half)
will point to the word containing the sample that exceeded the
threshold.
The left half of the third word of the MTAPE block specifies the
input multiplexing address for the ADC. Not only are there four input
channels that are serviced sequentially, but all four channels can be
switched to an alternate four inputs. This is specified by setting
the sign bit of the third word of the MTAPE block to 1. At some point
in the future, this left half may contain an honest multiplexing
address, such that input can be obtained from any of a number of
sources, but for now, you just have the four main channels and the
four alternate channels.
Neither the ADC nor the DAC take a standard monitor dump mode command
list. The effective address of the UUO points to a single IOWD. It
does not have to be followed by a zero.
26. The CORE2 UUO will take the direct (error) return if you ask it
to make a new upper segment for you and there are no job slots
available.
27. PTJOBX command number 7 is CLRBFI. It has the effect of having
done a CLRBFI for the TTY specified by the PTJOBX.
28. LOOKUP followed by ENTER updates date, time, PPN, and job name of
creator in file retrieval.
29. New UUO: TMPCRD [CALLI 400103] (formerly XPARMS) to read TMPCOR
files of another job. Calling sequence is
MOVE AC,[<code>,,ADR]
TMPCRD AC,
<error return>
ADR: <filename>,,<job number>
IOWD BLEN,BUF
<PPN for TMPCOR file>
BUF: BLOCK BLEN
Just like TMPCOR but only codes 0, 1, and 4 allowed. Illegal UUO
if non-allowed code; error return if no such job.
A job number of zero, or your own job number, refers to your own
TMPCOR files; in this case, all operations are allowed, and the
only difference from TMPCOR is that the PPN for the file comes
from the UUO. If ADR+2 is zero, the login PPN (not ALIAS) of the
specified job is used.
30. Remote users may not:
start spacewar modules; do EIOTM; or start an interrupt program in
IOT-user mode. Spacewar and EIOTM
get error messages, and interrupt programs are started ok but with
IOT-user off.
31. MTAPE to DSK where first word of arg block is neither 'GODMOD' nor
-1 returns the value of the uset pointer.
32. Error code number 1 to INTDMP is non-existant job number.
33. If the job name or number field in the INTIPI UUO is zero then
your own job is assumed.
34. More complete description of new-style clock interrupts:
Clock interrupts may be enabled by turning on the INTCLK bit
in the interrupt enablings. This starts the clock ticking regardless
of the state of the interrupt mask. If the clock interrupt should
try to occur when it is masked off, then the bit is set in JBTIRQ
anyway, i.e., the interrupt is pending and will occur as soon as it
is masked on. Disabling the clock interrupt deletes the clock
request and any pending clock interrupt. The time between clock
interrupts is one tick. The CLKINT UUO enables clock interrupts and
and sets the time between interrupts to the effective address of the
UUO. It no longer masks on the interrupt so that it is possible to
do a guaranteed indivisible operation involving clock interrupts.
Giving this UUO also flushes any pending clock interrupts that may
exist. If the effective address of the UUO is zero then clock
interrupts are disabled and any pending clock interrupt is flushed.
35. All new interrupt system UUOs that required a 1 in the ac field to
indicate processor 1, no longer have that restriction.
36. LINE EDITOR MOD. AFFECTING PTLOAD AND INWAIT
If the 40000,,0 bit (bit 3) in a TTY's line characteristics word
is a 1 when a PTLOAD uuo is executed for that TTY, the line editor
passes to the program every character typed on the keyboard during
the re-edit. These characters, including the activation character
which terminates the re-edit, appear ahead of the re-edited line, and
should be read in 9-bit mode to see the control bits. The activation
character is followed by a character code of 400 (<meta>NULL), an
otherwise impossible code; the next character will be the first of
the re-edited line.
An INWAIT executed after the PTLOAD will function as usual,
returning the length of the re-edited line, unless enough characters
are typed during the re-edit to nearly fill the TTY input buffer. In
this case, the program will be activated and the INWAIT will return a
length of 0; the program should then read one or more of the
characters in the buffer (but not too many, or the re-edit will be
terminated) and loop back to the INWAIT.
The 40000 bit may be set and cleared by SETLIN, and is
cleared by RESET.
37. RENAME UUO can now rename a file from one PPN to another. This capability
is implemented in COPY (e.g., "RENAME FOO[A,B]←BAZ[C,D]" is legal).
38. PDP-11 INTERFACE (19-MAY-74 -- BO)(14-apr-76)
Physical device name: ELF
See IFACE.BO[11,DOC] for details about the hardware.
You may INIT this device in dump mode (mode 17). The IN and OUT
UUO's take a single IOWD as their operand.
I/O status bits (SETSTS/GETSTS UUO's):
Bit(s) Name Meaning
18 IOIMPM Improper mode specified in INIT.
19 IODERR An error occurred during the last data transfer
(NXM11, BUSTO, PARITY, HUNG).
20 --- unused
21 NXM11 No response from the addressed UNIBUS location.
22 BUSTO Interface couldn't get the UNIBUS.
23 IOACT not used
24 BUSNIT You lost because a Unibus reset is going on.
25 PARITY Bad parity indication
26 HUNG Interface is hung irretrievably
27 --- unused
28 BGRAB Interface is holding onto the UNIBUS
(The PDP-11 is hanging).
29 NRETRY Don't retry on NXM11 or HUNG.
30:35 have the same meaning as in any other I/O device.
If NXM11 or HUNG is on, the system has tried 10 times before giving up
unless NRETRY is on. It always retries 10 times on BUSTO.
OTHER UUO'S
USETI CHN,ADR or USETO CHN,ADR
<only return> <only return>
ADR: MODE,,BUSADR
USETI and USETO set the data transfer mode and beginning UNIBUS
address for the following IN and OUT UUO's.
If bit 0 of the word at ADR is on, the mode is set from bits 13:17.
If bit 0 is off, the mode remains as it was before. The mode bits are
Bit(s) Name Meaning
13 NOPAR Ignore parity errors
14 GRAB Hold on to the UNIBUS during and after the transfer -
any error condition that sets IODERR will release the bus.
15 SGNEXT Extend the sign of input data.
16:17 Data packing mode, decoded as:
00 ONEWD one PDP-11 word per word, right adjusted
01 TWOWD two words per word, right-adjusted in each halfword
10 TWOWDR two per word, in right 32 bits
11 TWOWDL two per word, in left 32 bits.
In the two-word modes, the higher-order PDP-11 word is the one at the
first UNIBUS address. Sign extension has no effect in TWOWDL; it
operates on each halfword separately in TWOWD.
If bit 17 of the contents of ADR is on, the corresponding bus address
is set from bits 18:35. If off, the address remains where the last
IN or OUT left it, pointing to the UNIBUS address immediately
following the last word transferred. Mote that these are word, not
byte, addresses.
UGETF CHN,ADR
<only return>
ADR: <USETI word>
<USETO word>
UGETF reads the states of the two USET pointers and modes into a
two-word block starting at ADR. The results are stored with bits 0
and 18 on so that a subsequent USET addressed to one of these words
will set both the mode and the bus address.
RELEAS CHN,
<only return>
RELEAS resets the interface and clears its interrupt enablings, and
sets the USET pointers to 400000,,400000.
MTAPE CHN,ADR
<error return>
<normal return>
ADR: <instruction>
<data>
MTAPE does various things depending on the contents of ADR. ADR+1
either contains data that will be written to the 11 or receives data
read from the 11. In case of an error, DEVIOS contains the reason.
The general form of the <instruction> is
Bits Meaning
0:8 Operation code
9:12 unused
13:17 mode, interpreted as in a USETI or USETO
18 unused
19:35 UNIBUS address.
The mode and address of an MTAPE have no effect on the USET pointers
or the operation of subsequent IN's and OUT's, except that the BGRAB
state of the interface (and the BGRAB bit of DEVIOS) reflect the
state left by the last operation performed.
Op code = 1: FILL
<data> = <number>,,<const>
Writes <const> into <number> words beginning at the specified address.
Ignores mode bits 16:17.
Op code = 2: PEEK
Reads one or two PDP-11 words (depending on the mode) into ADR+1.
OP code = 3: POKE
Writes <data> into one or two PDP-11 words.
Op code = 4: BUSREL
Clears the interface, making it release the UNIBUS if it is in BGRAB
mode. BUSREL also clears the BGRAB bit in DEVIOS. The mode and
Bus Address bits are ignored.
Op code = 5: PWRTRP
Simulates a power fail trap on the pdp-11. I.E. the 11 traps thru
24. Note it does this 2 times, once on power down and once on power up.
39. File protection for disk files: the "same programmer, other
project" category is no longer used. Instead, the three categories
of protection are file owner (700 bits), other local users (070
bits), and other remote users (007 bits). The meaning of individual
bits is unchanged within each category for files other than UFDs.
The bits in the protection code for a UFD now affect protection for
files in that UFD, i.e., 4 bit prevents protection change for all
files in the UFD, 2 bit prevents LOOKUPs in the UFD and also prevents
reading the UFD as a file, and the 1 bit prevents ENTERs and RENAMEs
(except protection change) in the UFD. As in the file protection
code, the 400 and 200 bits are ignored by the monitor. ENTER or
RENAME of a UFD is illegal except that privileged programs (i.e.,
LOGIN and LOGOUT) can create new UFDs or delete old ones. Only the
owner of a UFD can change its protection (except for privileged
programs). Anyone may read the MFD but no one may modify it. Also,
there is a "default file protection code" associated with each UFD.
An ENTER of a new file with a user-specified protection of zero uses
this default value. An ENTER which is replacing an existing file
retains the old protection code if the user-specified code is zero.
The default file protection code for a UFD can only be set by LOGIN.
The values used for new UFDs are 005 for the UFD protection and 000
for the default file protection. Thus remote users may not write
files in most UFDs.
40. The IMPBIT in the line characteristics word for a terminal (1000,,0)
can be set but not cleared by the user (by SETLIN or PTSETL). That is,
once you set it, you're stuck with it.
41. Anything which unpurifies an upper segment (e.g., UNPURE UUO) also
changes its jobname by shifting it right one character (six bits), so
that the pure, sharable version will still have a unique name.
[42 is obsolete now!!!!!]
42. Bit 29 (100) must be on in any INIT, OPEN or SETSTS to the UDP to
denote old-format UDP service. (A new format is being planned.)
[No longer true!!!]
43. Error reponse from the XGP/Font Compiler has been expanded.
Case of MTAPE function 0, ADR+1 contains 4, ADR+2 contains 3, and
if ADR+3 contains either 3, 4 or 7 then ADR+4 will contain the octal
value of the last character assembled (or possibly the current character
being assembled).
44. P121 FBWRT UUO. Should say MOVEI AC,<band number> rather than
MOVEI AC,<logical fast band number>
45. P122 next to last line. Should read .... If you
rather than ... If you have
46. The DEVCHR UUO for a UDP now returns bits 18 and 19 as the OR of the
ASSCON and ASSPRG bits of all DDBs for that UDP. Bit 12 (available to
this job) is also set properly, i.e., the bit is on if the UDP is unused,
public, or private and owned by this job. Note that in a DEVCHR for DSK
or IMP, bits 18 and 19 will always be zero, since they are copied out of
the model DDB. If the UDP is in new mode (see 48 below), the DVDSK bit
(bit 1) will be on as well as the DVUDP bit (bit 2).
47. The DEVUSE UUO for a UDP returns, in bits 12:17, the job number of
the UDP's owner, if any. A zero in this field but bit 0 on MAY NOT
mean detached from system for a UDP, but rather assigned as public.
To be sure, check bit 7, which will be on for detached UDPs. The
following extra bits are set for UDPs:
3 40000,,0 ASSIGNed by this job
4 20000,,0 INITed by this job
5 10000,,0 ASIGNed by some other job
6 4000,,0 INITed by some other job
7 2000,,0 ASSIGNed as PRIVATE pack (by someone)
If bits 12:17 are zero, and bits 6 and 7 are one, the UDP is being used
as the swapping device. Again, note that the information returned for
DSK or IMP is wrong.
48. UDPs may now be used in "old" or "new" mode. Old mode is like
before; new mode is just like DSK, with the following exceptions:
a. MTAPEs which refer to absolute disk addresses are taken relative
to the first track (the SAT track) of the particular UDP used, and
are limited to the extent of that one UDP. (DSK MTAPEs still allow
all tracks to be used, including UDP tracks.)
b. The SATID for a UDP is a SIXBIT name which is intended to agree
with the name written on the pack label. This is not to be confused
with the UDP password.
c. The last track of the UDP is still used for a password, as in
old mode; however, the password need not be given for new-mode
operations, which are protected by the same scheme as on DSK. The
UDP password is also stored as the [1,1] password.
It is illegal to INIT a UDP unless you have ASSIGNed it
first. The ASSIGN command for UDP, unlike other devices, does not
necessarily prevent access by other users. There are three ways
of ASSIGNing a UDP:
PUBLIC -- new mode, other jobs may use the UDP.
PRIVATE -- new mode, other jobs may not use the UDP.
OLD -- old mode, other jobs may not use the UDP.
(The syntax of the ASSIGN command is ASSIGN [mode] dev [logname] ;
items in brackets are optional, default mode is PUBLIC.) The
mode may be changed between PUBLIC and PRIVATE by new ASSIGN
commands except that you must be the only user of the UDP to make
it PRIVATE. However, to change between old and new modes, you
must first deassign the UDP (there must be no DDBs for it).
The mode specified in the ASSIGN command controls the use of the
UDP; hence, the 100 bit in the INIT is no longer used.
A pack to be used in new mode must first be formatted.
(I.e., must have SAT and MFD.) Once a pack has been formatted,
attempts to write on it in old mode will fail unless you have
UDPPRV. Old mode reading is ok. (So much for read protecting
UDP files.) Attempts to read or write in new mode on an
unformatted UDP will, of course, fail.
The scratch/swapping pack has password *SWAP*. This
password is treated specially by the monitor in two ways: a zero
password is accepted in an old-mode ENTER, and it is impossible
to change the password (old-mode RENAME will fail).
49. Two new MTAPEs for DSK and file-structured UDP:
MTAPE CHN,[ 'GODMOD'
22
ADDR]
will store the number of free tracks on the UDP (or in the file
system for DSK) as typed by the RESO command. This is the number
of tracks before the monitor will not allow an ENTER, which is
=200 tracks before the structure is really full. Also,
MTAPE CHN,[ 'GODMOD'
23
ADDR]
stores the SATID of the structure. Both store into user address ADDR.
50. Device VOD REG 8/16/74
The voice synthesizer (VODER) has device name VOD. Mode 10 (octal)
is the only legal mode. The buffer size is 20 (decimal) data words.
The data in the user's buffer is sent directly to the voder.
The Voder interface interprets each word as four 9-bit bytes. The
400 bit of each byte is the valid bit. The other eight bits represent
a phoneme. Care should be taken to avoid the phoneme with value zero,
because this will cause the voder to stop, and the rest of the buffer-full
will not be transmitted until later, and data may become lost.
For a description of the correspondence between phonemes and byte-values,
see section 21 of the facility manual, FACIL.TED[H,DOC]
DEVCHR of VOD is DVOUT and a bit for mode 10. There is no special DEVCHR
bit for the voder. Only the UUOs OPEN (and INIT), OUT (and OUTPUT),
CLOSE and RELEAS are valid for the voder. LOOKUP, ENTER, RENAME, and MTAPE
are no-ops.
51. Interrupts will NOT terminate a SLEEP UUO prematurely. The
SLEEP will run to completion unless a UWAIT is done at
interrupt level when the SLEEP is in progress. The comment
in the manual under the SLEEP UUO that says an interrupt
will terminate the SLEEP immediately is WRONG.
52. The definitions on pp. 104-105 of the manual of the bits
INTPTO and INTPTI are reversed. The descriptions of what
the bits mean are correct, but the bit values are interchanged.
INTPTO is really bit 8 (1000,,0) and INTPTI is bit 5 (10000,,0).
53. When a new job is started up with the SWAP UUO, the privilege bits
of the old job are copied to the new job if the new job is getting
the login PPN of the old job. Otherwise, the new job's privileges
are cleared.
54. Correction to manual. Mode 16 for MTAs is exactly the same as mode 17.
55. In Appendix 1 of the UUO Manual (III Display Processor), under
the CHR Instruction on p. 191, change the character octal 177 generates
to a Circumflex (instead of a backslash).
56. The PPSEL UUO normally does a PPACT with only the newly selected PP
activated. This can now be inhibited by turning on the 400000 bit in
the PP number. Thus PPSEL 1 will do a PPACT 200000 but PPSEL 400001
will not. Also, contrary to what the manual says, PPACT on a Data
Disc does erase any PPs turned off (de-activated).
57. Clarification: The suppress Control-CR (set via SETACT) is effective
even if the terminal is not in special activation mode. Same goes for
other special low-order bits in the last word of activation table.
58. Date75 11/11/74 updated 11/22/74
January 4, 1975 is the last date representable in the old PDP-6 format
date field. The following changes have been implemented to extend the
dates for an additional 77 years.
1. DATE UUO [CALLI 14]
returns a 15 bit date, instead of 12 bits as previously documented.
2. Disk file dates
LOOKUP and RENAME have been changed to use bits 18-20 of
the second (extension) word of the argument block as the high bits
of the date last written. The low bits of the date last written
are bits 24-35 of the third word.
3. Dectapes (PDP-6 format)
LOOKUP returns the date in bits 24-35 of the third word
and bits 18-20 of the second word.
RENAME accepts a date in the same format.
ENTER ignores the date entirely; files always get their
date set to the current date by ENTER.
Note that the 15-bit date will actually be stored in bits
21-35 of the third word of the directory entry, and the split
field in LOOKUP and RENAME arguments is only for compatability
with the disk UUOs. Note that people who try to interpret the
data returned by LOOKUP should avoid being confused by the high
order date field which is returned in (bits 18-20 of) the halfword
which formerly contained only the first block number of the file (now
confined to bits 21-35).
ENTER, by the way, returns the block number of the first block of
the file in bits 21-35 of the second word.
4. Dectapes (PDP-10 format)
The extra date bits are smeared in the extra bit of the slot words.
The format is too horrible to explain here, see REG if you really
want to know. This affects only user programs since pdp-10 dectapes
are not supported by the system. The programs 6TO10, 10TO6, and
DMAN are NOT supported and will be not be converted. TENDMP will
be supported for PDP-10 dectape manipulation.
5. DSKTIM UUO
[Added 11/21/74] This UUO does NOT and will not return the correct
date after Jan 5, 1975. The date field returned by this UUO is
constrained to 12 bits. For a single UUO to get the date and time
(in seconds) use ACCTIM. The DSKTIM UUO will shortly be made illegal.
Conversion of programs to DATE75.
The following rules should be followed:
ENTER
The only date field that's relevant is the creation date in bits
21-35 of the extension word (disk only). If you wish to set the
creation date use this field, otherwise zero it.
LOOKUP
works as before; if you want to print the file's date last written
you must get that date from two words returned by LOOKUP.
RENAME
To get the default date and time, zero bits 9-35 in the third word, and
bits 18-20 in the second word. Otherwise, set these fields explicitly.
59. XGP default margin settings
LMAR 200
RMAR 1650 may vary with number of raster points/scan-line
TMAR 200
PMAR 1802 varies with the number of scan-lines/inch
BMAR 200
XLINE 4
The numbers above are all in decimal. Parameter names correspond to
XSPOOL switches. Some parameters are subject to change as the
physical charateristics of the XGP change. Parameters are changed
manually, so if you observe the XGP making short pages, etc., tell
REG or anyone else who knows how to change these settings
Nominally, the XGP has 200 raster points/inch horizontally, and 200
scan-lines/inch vertically.
The horizontal sweep is known to be non-linear, so if you're trying
to do exact graphics you'll probably lose.
60. A clarification about dectapes (PDP-6 format). REG 11/19/74
When an ENTER is done, if the fourth word is negative, it is assumed
to contain the IOWD for writing a DMP file. Note that DMP files
are written differently than other files on a dectape.
Normal files are written 127 words/block with a 1 word header that points
to the next block of the file (always the next block on the tape, or zero).
DMP files are written 128 words/block and always in consecutive blocks
and the IOWD for retreiving the file is in the directory.
60. In 8-bit IMP input, unused bytes in the last data word are flagged
by bits turned on in the four normally unused bits (32-35) with the
same significance as for IMP output (item 21, page 2). The value of
such unused bytes will always be zero, as before, so only programs for
which zero bytes are significant need worry about this.
61. Two new XGP escape sequences:
177 1 50 accepts the next byte as the intercharacter spacing.
Note this command is currently a no-op and is included for
compatibility with MIT.
177 1 51 is like stop underline (177 1 47) except the first
byte following the 51 allows the user to specify how thick
the underline will be. (The second byte following the 51
is taken in two's complement as the relative number of the
scan line on which to do the underline - same meaning as
underscore - 177 1 41 - see uuo manual).
62. Documentation error in description of bit 4 of function code
for data disk command word. In text mode, Bit 4 ON means double
width, OFF means single width. (The picture on page 199 is right)
63. Once the UDP has been assigned in PUBLIC mode, any job may
INIT or OPEN it without having to ASSIGN it itself.
64. Additional discussion of XGP error codes (REG 12/30/74)
XGPSER missed error (code 12 from error status MTAPE) returns
in ADR+2 the current scan line, and in ADR+3 the desired scan line
number for the text or vector that missed. XGPSER is not able to
queue text or vectors for scan line 0 of the first page of a transfer.
If it's necessary to queue things on scan line 0, it's advised that
a page be output prior to that attempt.
65. The TMPCOR and TMPCRD UUOs allow two new function codes, 6 and 7,
which are like 4 and 5 respectively (read directory, read and clear
directory) with the following differences:
a. All TMPCOR files for the specified job are listed, regardless
of alias (and deleted in function 7).
b. The directory list returned contains two words per file; the
first is the file's alias PPN, and the second is its name and size as
in the normal directory list. The AC specified in the TMPCOR UUO gets
the number of TMPCOR files, as usual.
66. Mode '1000 in LPTSER suppresses the TODF (top of double form)
that precedes the first output following CLOSE and the three TODFs that
occur at RELEAS. The suggested use for this mode is by programs that
use special forms (e.g., labels). Users of this feature should explicity
send a TODF ('177&'021) to the LPT before RELEAS to initialize the LPT
for the next user.
67. The description of JOBSYM (on page 206) should be corrected:
change
"the left half of this word contains the negative of the number of
symbols"
to
"the left half of this word contains the negative of the length of
the symbol table"
68. The SWAP UUO when used to write a DMP file changes JOBNAM to
the name of the file it writes.
69. The NULMES UUO (CALLI 400114) is just like TTYMES with the following
exceptions:
--The count field must be nonzero.
--A zero byte does not end the text, but is simply ignored. (It is
included in the count.)
--If the error (direct) return is taken, the AC containing the argument is
set to zero if the UUO failed because the TTY could not be found (no
such device, not a TTY, couldn't get a DDB); otherwise it is set to the
number of characters remaining to be sent. Thus the user can recover
from a temporary jam in the output buffer.
70. Magtape MTAPE uuo. If bit 40 is set in the effective address then the
"slice level" will be set from bit 20. Setting the slice level may enable
some tapes to be read which otherwise had errors. Also, setting the slice
level may be used as a maintenance feature. RELEAS uuo (or MTAPE 40) will
clear the slice level to normal.
[THIS FEATURE (70.) HAS BEEN DISABLED. USER CAN NO LONGER SET SLICE LEVEL.]
71. If you do an UNPURE uuo after having done a SETPR2, then the following
will happen:
1. if you did an absolute SETPR2, then nothing is changed and the
direct return is taken.
2. if you did a relative SETPR2, then the write protection is cleared
for you second protect and relocate register and the skip return is
taken.
Correction to description of SETUWP uuo: if the job has no upper segment
and hasn't done a SETPR2, then direct (non-skip) return is taken. If the
job has done a SETPR2, then a SETPR2 is done with the original parameters
and with the write protect bit in the requested state.
72. The 10000,,0 LINTAB bit, which formerly meant "model 37" (ha ha), now
indicates that characters less than 40 should be echoed (and output) as
uparrow followed by the character 100 greater than the real character,
except for 0 (null, not output), 7 (bell), and 11-15 (the format effectors).
This bit is initially on for TTY0-TTY11. It is ignored for Data Disc and
III displays. It can be set or cleared by SETLIN and PTSETL or by the
monitor commands TTY ARROW and TTY NO ARROW.
[ALL ENTRIES BEFORE THIS HAVE BEEN INCLUDED IN UUO MANUAL, SECOND EDITION.]
73. The PTLOAD UUO now takes any text typed by the user before or during
the PTLOAD and writes it into the line editor after the PTLOAD is over,
in such a way that no timing error is possible. A new UUO, PTL7W9
(PTYUUO 17,) allows the simulation of user typeahead; the format is
PTL7W9 ADR
ADR: <PTY number as for PTLOAD, usually 0>
<address of, or byte pointer to, 7-bit ASCII string as for PTLOAD>
<address of, or byte pointer to, 9-bit string of simulated typeahead>
The 9-bit string must be terminated with null (000). The UUO loads the
7-bit string pointed to by ADR+1, positions the cursor to the beginning
of the line, then simulates typing of the 9-bit string pointed to by ADR+2,
then simulates typing of any characters which the user had typed while
all this was going on.
To make this work, a new TTY IOS bit is used: PTLIP (4000,,0) for
PTLOAD in progress. The bit is on during a PTLOAD and diverts user
typeahead to a special buffer.
74. The 0,,10 bit in the fourth word of a SETACT argument (the bit name
is EMODE) causes a meta-null (400) character to be inserted in the TTY
input buffer after each line editor activation, following all characters
activated. Thus when an activation character is typed in the middle of
a line, the program can find out where the line ends. The 400 is an
activation character, in the sense that all of the text up to and including
it will be available to INCHWL. (Normally when the line editor is
activated by a character other than return in the middle of the line,
the program can only read (with INCHWL) up to the activation character,
not up to the end of the line, until another activation character is
typed.) Despite its use of a 400 code, this feature is not to be
confused with losing Poole mode.
75. The UPGIOT UUO effectively does a PGSEL for the POG in the UPGIOT.
76. The 0,,20 bit in the fourth word of a SETACT argument (the bit
name is BSACT) causes backspace with any combination of control and
meta bits (including none) to activate the line editor and be made
available to the user program if the line is empty. Works on TTYs
too.
77. The 0,,40 bit in the fourth word of a SETACT argument (the bit
name is ALLACT) causes all characters with either or both of control
and meta on plus backspace to activate except in re-edited lines.
78. Although the manual is correct, it should be noted in the device
dependent writeup for Dectapes that LOOKUP does not return the
file information as it is stored in the directory on the Dectape.
79. DSK 'GODMOD' MTAPEs 1 and 2 no longer take the sign bit of
ADR+3 to signify extra tracks at the end of system pack 0. There are
no extra tracks there. [Page 149]
80. UDPs (OLD and NEW) are now =15485 tracks long, not =15200. This means
that the password now lives in track number =15484. [Page 176]
81. The writeup on LOOKUP/ENTER/RENAME in the UUO manual should
mention that the ppn field is ignored for lookups on a channel opened
for device SYS, and that [1,3] is always used instead.
82. [OBSOLETE: SEE #106]
The GETHI UUO puts addresses 1000000 to 1377777 into a user's
upper segment address space (read only). This UUO skips on success.
GETHI is temporary and is intended for UEDDT only! Future versions
of the system will supercede this UUO with a more general mapping
function.
83. VDSMAP operation code 6, formerly unused, is now used for "set
line tied to". Bits 0, 1, and 9 of the AC argument are ignored.
Bits 11:17 must specify a physical Data Disc terminal number (not a
shadow line). The right half of the AC, instead of a pointer to a
channel map, should contain as an immediate operand the number of a
Data Disc line to which the specified physical screen should be tied.
If AC RH is zero, the screen is tied to the line to which its keyboard
is mapped. This operation requires the UPG privilege and skips on success.
It returns the map word which the given physical screen sees after the
UUO, i.e. the map for the line specified in AC RH if successful.
84. Job Data Area Symbols.
Appendix 2 has several typos, several ommissions, and some errors.
Only the symbols in the following list should be referenced by users
since all other locations in JOBDAT are subject to reshuffling, on
the assumption that no DMP files reference this data.
JOBDAT.MAC[CSP,SYS] contains the definitions that users get to see.
JOBUUO,40 ;USER UUO TRAP LOC.(UUO STORED HERE)
JOB41,41 ;USER UUO JSR LOCATION
JOBERR,42 ;IN WHICH RPG SYSTEM PASSES ERRORS TO THE LOADER
JOBENB,43 ;Interrupt enablings
JOBREL,44,1 ;RH=HIGHEST REL. ADR. IN USER AREA
JOBINT,71 ;TO SEPARATE OLD AND NEW INTERRUPT SYSTEMS
JOBHCU,72 ;HIGHEST USER IO CHANNEL IN USE
JOBPC,73 ;JOB PC WHEN JOB INACTIVE
JOBSAV,73 ;LAST LOCATION NOT SAVED BY SAVE COMMAND
JOBDDT,74 ;RH=STARTING ADDRESS OF USER DDT
JOBJDA,75 ;JOB DEVICE ASSIGNMENT TABLE
JOBHRL,115 ;UPPER SEGMENT PROTECTION. LH=BITS
JOBSYM,116 ;POINTER TO LOADER AND DDT SYMBOL TABLE POINTER
JOBUSY,117 ;POINTER TO UNDEFINED SYMBOL TABLE
JOBSA,120 ;LH=INITIAL JOBFF, RH=STARTING ADDRESS
JOBFF,121 ;FIRST FREE LOCATION IN USER AREA
JOBS41,122 ;C(JOB41) SAVED HERE ON SAVE COMMAND
JOBREN,124, ;REENTER ADDRESS FOR REENTER COMMAND
JOBAPR,125 ;PLACE TO TRAP TO IN USER AREA ON APR TRAP
JOBCNI,126 ;APR CONI BITS ARE STORED HERE ON APR TRAP
JOBTPC,127 ;PC IS STORED HERE ON USER APR TRAP
JOBOPC,130 ;OLD PC IS STORED HERE ON START,DDT,REENTER
JOBCHN,131 ;LH=FIRST LOC AFTER FIRST FORTRAN 4 LOADED PROGRAM
;RH=FIRST LOC AFTER FIRST FORTRAN 4 BLOCK DATA
;TO BE USED FOR JOB CHAINING
JOBCOR,133 ;SIZE OF CORE FOR JOB ON RUN,SAVE,GET COM.
JOBVER,137 ;JOB VERSION
JOBDA,140 ;FIRST LOC NOT USED BY JOB DATA AREA
85. SWAP UUO will now save upper segments. Set bit 35 in the extension word
of the save arguments. Despite what it says in the manual, SWAP does not
affect the upper, unless it does a GET. REG 9/28/75
86. Addendum (page 13). IOBKTL can come on for the PTR under two circumstances:
a. In mode 1 (Ascii Line) if no activator (LF or FF) is seen before filling
the buffer.
b. In mode 14 (Checksummed Binary) if the data word count (right half of the
first word of a block) exceeds the buffer size.
87. Addendum (page 30). REASSIGN UUO will assign (by console) a device
that is either assigned (by console) or inited (assigned by program).
Therefore, since reassign can assign to the same job as issues the uuo,
a job can assign to itself (by console) any device that it can init.
(Note that the IO channel is released, so you'd have to init it again, etc.)
88. APRENB UUO (page 124).
89. Use of JOBERR (see item 84)
RPG uses JERR in the following way: Initially it zeroes the right half before
starting the first translator. If a translator detects a source program error
from which it can continue, it should set the right half of JOBERR non-zero.
The LOADER checks this halfword to decide whether to start execution or to type
the "EXECUTION DELETED" message.
90. Device VOD and its device service have been flushed.
91. Device service for AD has been flushed, but AD still exists for hand input,
but must be servoed by user program on the PDP6.
92. Error codes for INTDMP, INTIPI, JOBRD have been changed slightly. See UUOCON.
93. SETSTS UUO if changing i/o mode may call device to futz with your buffers.
94. In SWAP UUO, for phantom startup, if no extension is given, DMP is assumed.
(It was already documented, incorrectly, as doing that.)
95. SETLIN UUO allows TBXPND to be set for TTYs and network-PTYs.
96. Typo, page 179 (ADC/DAC) "dveice" should be "device"
97. Bug fix in FILINF (DSK MTAPE). It reads 4 words.
98. Documentation change for DSK MTAPEs. Functions 10,11,15 apply to a 4-word
block of retrieval. Various places which refer to 5-words are wrong
(writeups for functions 10, 11, 14, 15). The file offset word is not a
part of the special retrieval area.
99. ADCSER changes. (see also 103)
Clearing CYCDON is a no-op.
IOAFT is not currently implemented.
100.User ACs after GET and RUN
0: Filename in SIXBIT of dump file
1: Extension in SIXBIT of dump file,,normal RH returned by LOOKUP
2: Normal stuff returned by LOOKUP
3: PPN of dump file
4: PPN of dump file
101.In a dump file with an upper segment, the upper is considered write
protected if the sign bit of HILOC is set. When the dump file is
in core, this bit is clear and write protection is indicated by the
sign bit of JOBHRL.
102. The description of what 272 points to is inadequate. see FAIL page 7
or talk to REG or JBR for more details.
103. Device ADC has been flushed. Instead, device DAC can be used for
both dump mode input and output, but not both (a RELEASE is necessary
to change directions).
The MTAPE to device DAC is changed: Bit 0 of ADR+1, if on, denotes
setting ADC parameters, if off, denotes setting DAC parameters.
The motivation for making this change is to allow the DAC to run
at (or closer to) full speed. The full generality of both input
and output may be reimplemented if the DAC/ADC is moved to the
mappiplexor.
As a consequence of not being able to do both I and O simultaneously,
all references to IOSYNC, IOAFT have been flushed.
104. [OBSOLETE: SEE #106]
GETHI uuo, with non-zero ac field signifies attach 1,400000 ff as the
upper (with read and write permission). This UUO is intended for
debugging the Suppes' memory only, and will not long endure.
105. CORE2 UUO has been changed slightly.
1. if core2 fails in getting core for a new segment, the new segment is killed.
2. if core2 fails because of access violation it no longer detaches the
segment from you (code changed to conform to documentation).
3. if core2 fails because of access violation, it returns in user's ac
the number of K available to him (code changed to conform to documentation).
4. if core2 fails because you wanted a new segment and there are no job slots
available, the number of K available is NOT returned in the user's ac
(documentation is incorrect).
5. if user requests 0K for the upper, the upper is always detached, and
if there are no other users of the upper, it is killed. Access checking
is not done (documentation is incorrect).
106. GETHI UUO. This definition should still be considered temporary!
CALL: MOVE AC,[# of pages,,first physical page*40+flags]
GETHI AC,
<ERROR>
<OK>
Flags are: 20 - write enable
10 - parity error suppress
error return occurs if:
# of pages exceeds 400
first physical+number of pages exceeds TMEMSIZ
if write enable is specified and user doesn't have ACWPRV
Suppress parity error bit works as follows. When a parity error
occurs on P1, in user mode, not PI in progress, and the current
job has a GETHI upper with the parity error suppress bit set
then the parity error is ignored entirely!
This UUO adds the specified physical pages to your map starting at
virtual page 400.
This UUO is temporary and is supplied for UEDDT and certain memory
diagnostics.
107. Meaning of FULTWX [page 44]
FULTWX on means that the line is "self-echoing full duplex", i.e.,
system echoing is not necessary. TTY ECHO clears FULTWX, and
TTY NO ECHO sets it.
108. Pre-shuffle and Post-shuffle interrupts will no longer be given.
[These haven't worked for some time.]
109. Lowcore pointer to JBTADR (loc 223) has been flushed. JBTADR will
be flushed soon. Meanwhile, JBTPAG (lowcore pointer at 324)
contains <page count,,first page assiged to user>
JBTSWP now contains in the right half two nine bit fields for
IMGOUT(bits 18:26) and IMGIN (bits 27:35) which are out and
in image page counts (formerly K).
Also affected: CORMAX - # of pages of user space
BIGHOLE # of pages in biggest hole
CORTAB is presently one 9-bit byte per page, but it will
change soon to prevent an ILDB from working.
110. New privilege: ATTPRV, bit 18 (0,,400000). Allows ATTACH command
to attach phantoms and turn on JLOG.
111. Other new lowcor pointers:
317 XMSET pointer to 9 words of XGP default settings for:
TMAR, PMAR, BMAR, LMAR, RMAR, XLINES, XTNODE, XVNODE
and XGPBLN. (XGPBLN is not settable by users.)
320 RTRHCT pointer to table of retry counts
321 TBLKPT,,TPJMP
322 DPHPOS,,PPCALL
323 PPRJMP,,PPNO
324 JBTPAG
112. New LTHUUO used to put upper into high core or take it out of high core.
NOTE: THIS UUO IS TEMPORARY ONLY. IF YOU PUT THIS UUO INTO SOME PROGRAM,
PLEASE TELL REG SO THAT THE UUO CAN BE REMOVED WHEN IT IS FLUSHED IN THE
SYSTEM.
MOVEI AC,0 ;Put segment in high core
LTHUUO AC,
<couldn't move you to high core>
<segment is now in high core>
or
MOVEI AC,1 ;Put segment in low core
LTHUUO AC,
<return here always, with segment in low core>
113. New line characteristics bit DMLIN, 40000,,0, means line is a Datamedia.
TTYFIL bit ignored for Datamedias.
114. New TTYSET UUO to diddle various things about the user's attached TTY,
and occasionally to find out things about other TTYs.
MOVE AC,[-LENGTH,,TABLE]
TTYSET AC,
TABLE: BLOCK LENGTH ;Block of operations to be performed.
Each word in TABLE is a function word representing a specific
operation, with the op code being in the high-order 9 bits (bits
0:8, 777000,,0). The remaining bits of the function word are
used as arguments to the operation, with the meaning of specific
bits being dependent on the particular op code. The currently
defined op codes are listed below. More op codes will be added
from time to time. A function word containing an op code larger
than the largest one currently defined will cause the job to get
the system error message Illegal UUO.
Bits 0:8 Meaning of op code, interpretation of argument(s)
-------- -------------------------------------------------
000 No-op.
001 Turn on indicated line characteristics bits.
Ones in any of bits 18:35, representing line characteristics bits
0:17, indicate line characteristics bits you want turned on. No
indication is given of attempts to turn on illegal bits; they simply
are not turned on.
002 Turn off indicated line characteristics bits.
Ones in any of bits 18:35, representing line characteristics bits
0:17, indicate line characteristics bits you want turned off. No
indication is given of attempts to turn off illegal bits; they simply
are not turned off.
003 Get line characteristics and line number.
The address field (bits 18:35, 0,,777777 bits) of this function
should point to a word to receive the returned line characteristics
in the left half and your tty line number in the right half. The
returned word will contain -1 if the job is detached.
004 Execute ESC or BREAK command.
This function performs the operation normally carried out when an ESC
or BREAK command is typed on a display's keyboard. However, the TTY
attached to the job executing this function does NOT have to be a
display. If the TTY is not a display and the ESC/BREAK command given
applies only to displays, then this function will be a no-op. The
only ESC/BREAK commands currently meaningful on non-displays are:
ESC/BREAK F,I,X,Z. This function is recommended over the PTY writing
UUOs because it does not interfere with actual typein from the
keyboard (including ESC and BREAK commands typed from the keyboard).
The low-order 7 bits of the function word (bits 29:35, 0,,177 bits)
are taken as an ASCII character to be "typed" preceded by ESC or
BREAK. Bits 18:26, 0,,777000 bits, of the function word are
interpreted as the numeric argument to the command. The command will
be ESC if bit 27 (0,,400) is off (zero) and BREAK if this bit is on
(one). For example, <004000,,"W"> will do ESC W, and <004000,,520>
will do BREAK P (120 is "P"). Escape commands that affect the physical
TTY rather than the one to which you are mapped cannot be executed with
this UUO; these include all the video switch and audio switch escape
commands and the mapping commands (ESC/BRK +*ADSTUBM and BRK L).
005 Set TTY WIDTH.
This function sets the maximum TTY line width for output of text to
the TTY, as the TTY WIDTH command does. DD and III ignore this width
as do non-ARPA PTYs.
006 Get TTY WIDTH.
The maximum line width for the TTY is returned in the word pointed to
by the right half of the function word. E.g., 006000,,2 will return
the TTY width in AC 2, 006000,,140 will return it in user location 140.
007 Get TTY horizontal position.
The horizontal position of output and echoing is returned in the word
pointed to by the right half of the function word.
010 Inhibit CONTROL-CR once only now.
The CONTROL-CR feature of reloading the last line activated from the
line editor (displays only) is inhibited for right now only. This is
a useful function to execute immediately after a program has read a
password or other secret information that should not be displayed.
Thus the last line activated at the time this function is given cannot
be retrieved with CONTROL-CR. If there is already text in the line editor
at the time this function is given, then this function is a no-op.
011 Turn on selected bits in TTY's IOS word.
Bits on in the right half of the function word are turned on in your attached
TTY's I/O status bits. You cannot set the IOACT bit (0,,10000 bit).
012 Turn off selected bits in TTY's IOS word.
Bits on in the right half of the function word are turned off in your attached
TTY's I/O status bits.
013 Return TTY's IOS status word.
The I/O status word for your attached TTY is returned in the word pointed to
by the right half of the function word.
014 Turn on or off special DM bits.
This function has no effect if your job is not running on a Datamedia display
(DM). If bit 35 (0,,1 bit) is on in the function word, your DM is flagged
as capable of displaying the control characters (1:37 octal) when they are
sent following an ASCII escape (octal 33). If bit 34 (0,,2 bit) is on in
the function word, your DM is flagged as NOT capable of displaying the
control characters. If bit 33 (0,,4 bit) is on in the function word, your
DM is flagged as NOT wanting the line editor displayed in blinking/bold
(e.g., your DM doesn't have blinking and bold interchanged). If bit
32 (0,,10 bit) is on in the function word, your DM is flagged as wanting
the line editor displayed in blinking/bold. The remaining bits in the
function word are reserved for future uses.
015 Get display's screen height.
If the 400,,0 bit is on in the function word, then this function returns
the number of screen lines for the display whose line number is given in
the 177,,0 bits of the function word. If the 400,,0 bit is off, the
number of screen lines for your own display is returned. The number of
screen lines is returned in the word whose address is in the right half of
the function word. The value returned will be zero if the specified
terminal is not a display.
016 Set DM display's screen height.
This function has no effect if your job is not running on a Datamedia
display (DM). The number of lines the system considers your DM to have is
set from the right half of the function word. Currently, this number must
be at least 8. If the right half of the function word contains a (signed)
value less than 8, then the default number of screen lines, namely 24, is
used for your DM. Note that after you give this function, a screen reset
(e.g., ESC N or UUO RESET) is necessary to actually cause the number of
lines used by your page printer to take into account your new screen
height.
CPOPJ ;0 ;NO-OP
LINSET ;1 ;TURN ON GIVEN LINE CHARACTERISTICS BITS
LINCLE ;2 ;TURN OFF GIVEN LINE CHARACTERISTICS BITS
GETLN2 ;3 ;GET LINE CHARACTERISTICS
TTESC ;4 ;DO ESC COMMAND
TTWID ;5 ;SET TTY WIDTH FIELD
GETWID ;6 ;GET TTY WIDTH OR DPY WIDTH
GETHP ;7 ;GET TTY HORIZONTAL POSITION
NOCCR ;10 ;PREVENT USER FROM DOING CONTROL-CR NOW ONLY
STIOS ;11 ;TURN ON GIVEN IOS BITS
CLIOS ;12 ;TURN OFF GIVEN IOS BITS
GTIOS ;13 ;GET TTY'S IOS BITS
DMDIDL ;14 ;DIDDLE SPECIAL DM BITS
GDPHGT ;15 ;GET DPY HEIGHT (LINES/SCREEN)
SDPHGT ;16 ;SET DPY HEIGHT (DMs ONLY)
115. PPINFO UUO--Minor changes to bits returned in word 2 of info block.
Ones in the following bits now indicate information as follows:
Bit 0--TTY is a III
Bit 1--same as always (screen erased by ESC command)
Bit 2--DD page color is green on black
Bit 3--TTY is a DM (Datamedia terminal)
Bit 4--TTY is a DD (Data Disc terminal)
Bits 18:35--same as always (line editor Y-position in LEYPOS format)
116. XGP underscore command (a clarification).
1. Left end is at the current column position.
2. Final column position is 1 column to the right of the last
underscore column. (I.e., final column←initial column+length
of underscore.)
117. The system (7.05) now agrees with the manual. XGPSER implements
177 1 52 n - set relative base line adjustment.
118. XGP changes.
1. MTAPE function 0, error code 15 means "Font Compiler core
image moved (or disappeared) while the XGP was running".
2. MTAPE function 4 now returns in ADR+3 the value of XGPRDY.
This cell is -1 if the XGP has OK status, 0 if XGP requires
manual intervention (7.05/D).
119. Clarification of the disk Record Offset feature, page 147.
The manual is correct in what it says about MTAPEs 20 and 21
taking or returning the number of the first logical record
(which is the number of hidden records plus one). Note
however that the offset is stored in the retrieval (and thus
returned by MTAPEs that read the retrieval) as the number of
hidden records. Also note that MTAPEs 10 and 11 only deal
with 4 special words of file info instead of five.
120. SETCRD UUO affects your lower iff the 400000,,0 bit is on.
(Changed from "any of 444000,,0 bits is on".)
121. The TTYMES and NULMES UUOs have been modified to type out the given
message on both the current PP (piece of paper) and PP number 0 if
all of the following conditions are true: 1) the destination
terminal is not your own specified by device 'TTY'; 2) the
destination terminal is a display whose current PP is not PP 0;
3) the destination terminal is not "holding" terminal output. If
conditions 1 and 2 are true but terminal output is being "held",
the message is output only on PP 0. If either of conditions 1 or 2
is not true, the message is output only on the terminal's current
PP. Thus the message is always output to PP 0 unless the
destination terminal is your own and is specified by device 'TTY'.
This means that if you receive a message while you are using E or
some other program that uses some PP other than PP 0, you can see
the message (as typed out on PP 0) by typing BREAK N (which selects
and redisplays PP 0).
122. New ELF MTAPE. Opcode 5 fakes power trap on 11. See UUO MANUAL, p. 201.
Op code = 5: PWRTRP
Simulates a power fail trap on the PDP-11. I.e., the 11 traps thru 24.
Note it does this 2 times, once on power down and once on power up.
123. The 11 interface (ELF) can interrupt the 10 thru the user interrupt system.
Bit 20 (0,,100000) (called INTELF) is the relevent bit to enable.
The device ELF must be yours for you to get this interrupt. The 11 requests
this interrupt by writing a 1 into the least significant bit of word
772566 on the unibus.
124. Users are warned that in DSK buffered mode the sequence:
ENTER
OUT
...
OUT
RENAME
CLOSE
will clobber parts of the file.
Do the RENAME after the CLOSE. Also in dump mode any outputs after
a RENAME will clobber parts of the file.
125. [This entry will be not be effective until system 8.00]
In a DSK RENAME, if any of 0,,700000 in ADR+1 or 777,,777777 in
ADR+2 is non-zero then the user-supplied data will replace
the corresponding fields in the file retrieval (didn't always
work before). If the user-supplied fields are all zero, then
the old retrieval information is kept (it is not the case that
the current time is supplied instead) (manual didn't specify
what happened).
126. [This entry will not be effective until system 8.00]
The bug described in 124 has been fixed.
127. The problem mentioned on page 145 paragraph 4 about writing an odd
number of words in dump mode has been fixed. It now works the
way you would expect. (Also on page 177, second paragraph.)
128. It should be noted on p. 215 of the UUO Manual that the address in
a JUMP instruction for the DD interface is always taken as absolute
(never relocated in a user program) and thus the JUMP instruction
should not be used in user DD programs. The JUMP instruction is
included for completeness and for system programmers.
129. DSK Dump mode output using the ACs as data is illegal. (Use of
ACs as dump mode command list is still OK.)
130. UPGIOT UUO for Datamedia (DM) displays.
[ME - The following specifications for DM display output are subject to
change as necessary during the next few weeks.]
The UPGIOT UUO can be used on Datamedia (DM) display terminals to run a DM
display program. For DM display programs, this UUO accepts several flags
in the left half of the first word of the header block, as explained
below. The DM display program itself consists of a sequence of 7-bit
bytes (an ASCII string), which bytes are by default interpreted as 7-bit
characters to display, except for the special 7-bit byte value of 177,
which causes the next character, if in the range of 000 to 040, to have
its normal control effect on the DM, instead of being interpreted as a
printable character. Normally, a character with octal value less than 40
(except for NULL (0), which is ignored, and TAB (11), LF (12), and CR
(15), which are not printing chars) is interpreted as a Stanford character
to display in its special DM representation, namely as the char which is
100 or 140 greater but blinking or bold.
A 177 char in the program causes the next character to have its normal DM
function if that char is greater than or equal to 175, or is less than or
equal to 040. The sequences 177 n, where 40<n<175 are reserved for future
escape meanings, and are currently no-ops. If the char after a 177 is a
FF (i.e., a 14, the cursor positioning DM command), then the next two
chars after the FF will be taken as the X-Y position for the cursor in
standard DM representation (see ** below). To actually output a 177 to
the DM, you must precede it with a quoting 177. The DM commands possible
using quoted control characters are explained later.
RESET and EXIT UUOs will flush any pending display program on a DM.
Here is the form of the UPGIOT UUO for DM display output.
UPGIOT HDR
HDR: <flags>,,PROG
<length of display program, in words>
<In-Progress flag>
PROG: <7-bit bytes>
Flag bits in the LH of the first word of the header are interpreted
as follows:
BIT OCTAL NAME MEANING
0 400000,,0 Overlapped mode. The UUO will return immediately
without waiting for the display program to
finish. However, it will wait for any previous
DM display programs to finish before returning
(unless the CHASTE bit is on--see below). While
the program is running, the <In-Progress flag>
will be non-zero. When the program finishes,
this flag will be cleared, unless the job does a
RESET or EXIT before the display program has
finished and cleared the flag.
1 200000,,0 Ignored (double-field mode for DD programs).
2 100000,,0 DMQUOT Quote all characters in the program, except 0's
and 177's. That is, control chars will never
be converted to blinking/bold
characters to represent chars 1:37 in the
Stanford char set. No conversion of Stanford to
Ascii will be done for the three characters that
are different in the two character sets. No
automatic erasing of new lines will be done.
Tabs will never be converted to spaces on output,
nor spaces to tabs.
3 40000,,0 TRUNCA Truncate each output line to 80 characters.
When the 80th column of a line is passed on the
DM display, following bytes will be ignored
until a CR, LF, or quoted (by 177 or DMQUOT)
F appears.
4 20000,,0 NOEEOL Suppress the erasing of each line that normally
occurs just before anything (including a CR or
LF) is output on the line.
5 10000,,0 NOEEOB Suppress the erasing of any line on which nothing
is output but CR or LF.
6 4000,,0 BETWEE Ignore spaces between tabs. When a tab is
encountered in the program, all following
spaces and nulls are ignored until another tab
or a character other than a tab, null, or space
is seen. If the terminating character is a
tab, then it also is ignored.
7 2000,,0 USERGO Don't let any other DM output occur while this
program is running. Normally, higher-priority
DM outputs (e.g., line editor and page printer
output) can interrupt a user program. Also, if
the output from the program falls off the
bottom of the screen, it will wrap around to
the top if and only if this bit is set;
otherwise text occurring after falling off the
bottom will be ignored until a command to
position the cursor back on the screen is seen.
8 1000,,0 CHASTE Don't wait for any previous DM display program
to finish. Instead, suppress the remainder of
such a previous display program.
Here are the effects of control characters transmitted to a DM display terminal.
To get these chars output from a display program, you must quote them either
with the DMQUOT flag explained above or with a preceding 177 character. The
characters TAB (11), LF (12), and CR (15) do not need to be quoted in a display
program in order to be transmitted to the display. (TAB does need to be quoted
if the system thinks the terminal either does not have tab stops or does not
have its tab stops set correctly; an unquoted tab in such a case will be
converted to the equivalent number of spaces.)
If the DM is in insert/delete (ID) mode, four of these control characters have
special effects; these are explained later. The remaining control characters
have generally undefined and in some cases weird effects in ID mode.
OCTAL CHAR ↑CHAR Effect
000 NULL ↑@ no-op.
001 ↓ ↑A no-op.
002 α ↑B home. Moves cursor to upper-left corner.
003 β ↑C no-op.
004 ∧ ↑D no-op.
005 ¬ ↑E no-op.
006 ε ↑F no-op.
007 π ↑G bell. Beeps the DM's audio tone.
010 λ ↑H back cursor. Moves left one char unless at left margin.
011 TAB ↑I tab. Moves to next tab stop. Normally need not be quoted.
012 LF ↑J linefeed. Moves down a line, or to top line from bottom.
013 VT ↑K tab clear. Clears any tab stop at current column.
014 FF ↑L set cursor position from next two chars. See ** below.
015 CR ↑M carriage return. Moves to left margin and down a line.
016 ∞ ↑N blink on. Subsequent chars will be blinking. See * below.
017 ∂ ↑O protected field on. Subsequent chars will be bold. See *.
020 ⊂ ↑P insert/delete on. Enters insert/delete mode. See ***.
021 ⊃ ↑Q transmit page to computer. This char never sent to DM.
022 ∩ ↑R transmit page to printer. This char never sent to DM.
023 ∪ ↑S transmit line to computer. This char never sent to DM.
024 ∀ ↑T no-op.
025 ∃ ↑U no-op.
026 ⊗ ↑V no-op.
027 ↔ ↑W erase from cursor to end of line.
030 _ ↑X cancel. Turns off blink, protected field, ID, & roll modes.
031 → ↑Y set tab. Sets a tab stop at current column.
032 ~ ↑Z up cursor. Move up a line unless on top line.
033 ≠ ↑[ no-op.
034 ≤ ↑\ forward cursor. Moves right a char, to next line from end.
035 ≥ ↑] roll on. Turns on roll mode. See **** below.
036 ≡ ↑↑ master clear. Clears screen, tabs, and all modes but roll.
037 ∨ ↑← erase screen. Clears unprotected text, all modes but roll.
* Stanford DM terminals will have a hardward modification installed to
interchange the effect of the blink-on and protected-field-on chars and to
disable the protectedness of chars sent with protected-field mode on. Thus,
with this mod, blink-on will cause subsequent chars to appear as bold, and
protected-field-on will cause subsequent chars to appear as blinking and not be
protected. Furthermore, blinking protected-field chars that are moved by ID
operations will stop blinking.
** The FF character is used to move the cursor to an arbitrary X-Y position on
the screen. The position is determined by the next two chars sent after the FF.
The first of these two chars sets the X-position and the second the Y-position.
The actual X- or Y-position set by a character is determined from the octal
value of the character XORed with 140 (octal) and counting lines from 0 to 23
(decimal) and columns from 0 to 79 (decimal). X- and Y-position characters that
are out of range of the screen will select a position of 0. If the X- or
Y-position character is one of the chars home (↑B), FF (↑L), transmit page (↑Q
or ↑R), cancel (↑X), master clear (↑↑), or erase screen (↑←), then the cursor
positioning command is aborted and the aborting command is executed instead.
*** In Insert/Delete (ID) mode, the following four control characters have
these special effects rather than those listed above. Other control chars have
undefined effects in ID mode.
OCTAL CHAR ↑CHAR EFFECT IN ID MODE (none of these moves the cursor)
010 λ ↑H delete char. Chars to the right shift left one space.
012 LF ↑J add row. A blank line is inserted, lines below move down.
032 ~ ↑Z delete row. Lines below move up one line.
034 ≤ ↑\ add char. Space is inserted, chars to the right move right.
**** In roll mode, a CR or LF sent while on the last line of the display will
cause the insertion of a blank line at the bottom of the screen to force the
whole screen text to scroll up one line. The cursor is left at the bottom
instead of moving to the top line as it would if roll mode were off. Note
that roll mode can only be cleared by the cancel character, ↑X.
For more details, consult the Datamedia manuals or ME.
131. SUPERS bit (0,,100) in fourth word of SETACT table suppresses
erasure of the DD or DM line editor upon activation while
positioned to specific screen location with LEYPOS UUO.
132. KILTTY bit (40000,,0) in TTYTAB means TTYSER has called TTYKIL
for this line and is through with the DDB, which will be released
by DPYKIL when (and if) the dpy header is released.
133. RUN UUO takes core size argument in words, not in K as documented.
134. New CURSOR UUO [PPIOT 10,] specifies place to leave DM cursor when
output isn't going on provided but only when the line editor is empty.
CURSOR [X,,Y]
If [X,,Y] is negative, then the cursor is always positioned wherever
the line editor cursor should be. If X and/or Y specifies a position
that is off screen, no cursor will be displayed. Values of X and Y
should be 0 for the left margin and top line respectively, and N-1
for the Nth column and Nth line respectively.
The effect of the CURSOR UUO is undone by RESET, DPYCLR, and ESC or BRK N.
135. Absolute location 331 now contains LDSHF*1000+LDPWR,,LDAVG.
136. Page 181 change MTAPE ADR to MTAPE <channel number>,ADR
137. The XGP and DAC devices are now interlocked. Only one of them
may be INITed at a time. If you try to INIT the XGP, for example,
while the DAC is in use, it will give an error message or the error
return if the 400 bit is on in the mode, or wait automatically if the
1000 bit is on.
138. (add to item 122) ELF MTAPE for powerfail clears GRAB mode.
139. Delete all references to the Librascope and to fast band service.
Low core pointers for FBBANDLIST and FBACT are now zero and reserved
for future use.
140. The descriptions of INTPTI and INTPTO in Section 9 are interchanged.
Bit 5 (10000,,0) is INTPTI but should say "A PTY you own has just
gone into a wait state waiting for some input from you (e.g., by
PTWR1W); it may be waiting for either a character or a line." Bit 8
(1000,,0) is INTPTO but should say "A PTY you own has just output a
character for you to read (e.g., with PTRD1W)."
141. The new RDLINE UUO reads a line from a TTY, returning a 9-bit string
ended with a null. The calling sequence is:
MOVE AC,[BBCCCC,,ADDR] ;ADDR IS ADDRESS FOR RETURNED 9-BIT STRING
RDLINE AC,
where BB (two octal digits) is the initial byte position (to be
IDPBed) for returning characters, and CCCC (four octal digits) is
the maximum number of characters (including the ending null) to be
returned by this UUO. If CCCC=0, then the default maximum is used,
namely 160 (decimal) characters (including the ending null) (50
octal words). The byte pointer to the ending null byte is returned
in the AC. This UUO reads characters until either the maximum count
is used up or a whole "line" has been read. A "line" is defined as
follows: If the terminal is a display with the EMODE bit turned on
(see item 74 in this file), then a line is any number of characters
terminated by a 400 (the marking character in EMODE); otherwise, a
line is any number of characters terminated by an activation
character (which is defined in the usual manner, e.g., as in INCHWL).
Note that if the AC of this UUO contains just 0,,ADDR upon call,
then the characters will be returned starting in the high-order byte
of address ADDR+1, since the byte position (00 in this case) is
incremented with the first deposit.
142. Section 9.1, Page 118, first paragraph, third line from end should
say "If your job is not in one of the queues..." instead of "...or
the queues...".
143. All references to PDP-6 should be changed to P2 and KA10 to P1, etc.
144. The LOCK UUO no longer returns anything in the accumulator.
145. Accumulator 2 no longer contains the job's protection-relocation
when a SPACEWAR module is started up.
146. The maximum size of a transfer from the TV camera (INPUT UUO for
device TV) is 18 pages (thats 9*1024 words).
147. More TTYSET UUO functions implemented. See page 13, entry 114.
148. Programs that run the disk in buffered mode should consider using
a larger number of buffers. The system default is two (too low)
whereas, the maximum useful number is 19. 19 permits an entire disk
track to be read and copied into the user's buffers, whereas with two
buffers, the system must read the track 9 times. The number 19 is
derived from the format of files on the disk and will change if the
disk format changes.
149. The FREEZE UUO allows user programs to determine exactly what
characters are transmitted to a Datamedia (DM). This UUO uses the AC
field as an immediate argument. If the AC field is 1 (FREEZE 1,),
then non-UPGIOT output is frozen and will not take place. If the AC
field is 0 (FREEZE 0,), then non-UPGIOT output is unfrozen and can
continue. However, any time the state of frozenness is changed, all
queued output is flushed instantly. While the DM is in the frozen
state, transfers queued by UPGIOT will still be allowed to go
through, but if the DMQUOT bit is on for such a UPGIOT transfer, the
display program text will be sent EXACTLY as given to the system,
with no padding characters ever inserted and no interpretation of
such things as control characters, long line wraparound, etc. If the
DMQUOT bit is off for a frozen UPGIOT transfer, normal text
interpretation occurs. RESET, DPYCLR, and ESC C all restore the DM
to the unfrozen state.
150. The UUOs INCHRW, INCHRS, INSKIP, SNEAKW, and SNEAKS can now access
the first character of the line editor, even if the line editor
cursor is at the left margin.
151. Two new bits have been added in the right half of the fourth word of
the special activation table (set by SETACT UUO). These bits, which
effect activation of the line editor, are:
SUPACT (0,,200)
This bit suppresses CONTROL and META bits on all characters except
line editor commands. In this mode, anything typed with CONTROL or
META is inserted into the line, never overtyping something already
there, but the bucky bits are then discarded. When you are typing to
the monitor, you are effectively always in this mode.
SUPEOL (0,,400)
This bit suppresses activation by the following commands at the end
of the line editor: CONTROL-TAB, CONTROL-R, CONTROL-S, CONTROL-K, and
META-<plain non-activating char>. Among these, the CONTROL commands
are carried out as line editor commands, including the taking of a
following character argument by CONTROL-S and CONTROL-K; however,
these commands are all no-ops at the end of the line (except for
storing the repeat search/kill argument). META-<plain non-activating
char> at the end of the line is treated as though the META had not
been typed. However, ALLACT mode (0,,40 in the same group of mode
bits of SETACT table) takes precedence over this mode--anything
required to activate by ALLACT, including META at the end of a
not-reedited line, will activate dispite this bit being set. Note
that CONTROL-D and CONTROL-I still activate at the end of the line in
SUPEOL mode.
152. New UUO .SYML for looking up system symbols. CALLI 400010 (used to be
UFBGET)
CALL: MOVEI AC,ADR
.SYML AC,
ERROR RETURN
SUCCESS RETURN
ADR: RADIX50 0,SYMBOL
ADR+1: RADIX50 0,BLOCKNAME OR 0
The UUO will search the system's symbol table for tge given symbol.
If it is found in the specified block, the symbol's value is returned,
regardless of the existence of the symbol in any other blocks. If the
blockname is 0, then there must be exactly one occurence of the symbol
in the table.
On a successful return the symbol value will be in AC.
On a failure return, AC will contain a failure reason:
0 system symbols not in core of not sorted
1 symbol not found in any block
2 symbol not found in specified block, but is in some other block
3 symbol multiply defined (blockname was 0)
153. The left kern parameter in fonts is now interpreted as a 9 bit twos
complement quantity by XGPSER, allowing for right kerning. (hpm)
154. The SHOWIT UUO causes your job's wholine to include a display of
the status of a disk (DSK or UDP) file on the right half of the 3rd
line of the screen. SHOWIT is CALLI 400011 (formerly UFBGIV UUO).
The left half of the 3rd line is never touched by the wholine. The
form of the filestatus display is the same as that typed out by the
FILES commands except that the job number is omitted since it always
matches that in the user line of the wholine. The form is
FILENM EXT PRJPRG length usetp FLAGS
where "length" is the file's length in records, "usetp" is the
current value of the USET pointer for the file, and, in the FLAGS, U
means the file is on a UDP, R means the file is being Read, RA means
the file is open in Read-Alter mode, W means the file is being
Written, and E means the End of file has been reached.
Call: MOVEI AC,BITS+CHANNEL NUMBER
SHOWIT AC,
where BITS includes any of the following:
0,,400000 ;Suppress the erasure of the filestatus display
;that normally happens when the I/O channel being
;displayed is released. Useful if your program
;normally displays something else on that line.
;This bit is irrelevant if the display is a III.
0,,200000 ;Don't display any filestatus on the wholine.
;This turns off any previous filestatus display
;(whether turned on by UUO or keyboard command).
155. Bit 17 of word 2 of the block returned by PPSPY/PPINFO will be on
if the display is a DM with a FREEZE in effect.
156. The ESCAPE I interrupt returns as a datum the argument given to the
escape command, in sign magnitude format (sign on for BREAK, off
for ESCAPE).
157. The LEYPOS and DPYPOS UUOs, which take arguments specifying the
screen position of the line editor and page printer, respectively,
normally take arguments from -1000 (bottom of screen) to 1000 (top
of screen), with other values being off screen. On DMs, however,
-1000 is at the 24th line but negative values with magnitude
greater than 1000, for instance -1200, may not represent off-screen
positions if the DM is a simulated DM with more than 24 lines. On
the other hand, positive values with magnitude greater than 1000,
for instance 1200, will always be off-screen. Also, note that only
the low-order 9 bits of the position argument are examined, with
this 9-bit value being taken as a 2's-complement number. Thus the
2000 bit is the sign bit, and the possible range of values for the
position is from -2000 to 1777 (octal).
158. The SUPCT bit (0,,40000) in the fourth word of a special activation
table used with the SETACT UUO disables the (new) line editor
commands αT, αL, and αB. With the SUPCT bit set, any of αT, αL,
and αB typed will be processed as normal typein to the user
program.
159. The problem mentioned in item 128 about absolute Data Disk jump addresses
has been fixed. The Data Disk now transfers using user-relative
addresses thanks to the Mappiplexor.
160. The maximum transfer size for the ADC or DAC is 32K.
161. Two new MTAPEs have been added for device DISK and UDP in either new or
old mode.
MTAPE TO READ THE DISK IN DUMP MODE INTO P3 MEMORY
CALL: MTAPE CHN,[ 'GODMOD'
24
IOWD FOR TRANSFER RELATIVE TO BEGINNING OF P3 MEMORY
ADDRESS OF USER MODE PLACE TO STORE ECC INFO
(THIS AREA MUST BE WRITABLE AND AT LEAST 38. WORDS LONG)
ECC STATUS WORD 1 IS STORED HERE
ECC STATUS WORD 2 IS STORED HERE
DISK ADDRESS FOR OLD MODE TRANSFER
]
THE ECC INFO IS TWO WORDS PER ENTRY IN THE FOLLOWING FORMAT:
BYTE (12) BYTEC (24) BITS ↔ P3 AOBJN POINTER TO RECORD
WHERE BYTEC IS THE BYTE COUNT FROM THE BEGINNING OF THE RECORD AND BITS
ARE THE 3 BITS FIELD TO BE XORED WITH THE DATA.
ECC STATUS WORD 1 HAS THE FOLLOWING FORMAT:
-N,,USER ADDRESS OF NEXT LOCATION TO STORE ECC INFO AT (N MAY BE ZERO)
IF THE LEFT HALF IS 1 THEN SOME ECC INFO IS LOST. IF SO, THE ECC STATUS
WORD 2 IS THE FIRST P3 ADDRESS OF THE FIRST RECORD WHOSE ECC INFO WAS LOST.
MTAPE TO WRITE THE DISK IN DUMP MODE FROM P3 MEMORY
CALL: MTAPE CHN,[ 'GODMOD'
25
IOWD FOR TRANSFER RELATIVE TO BEGINNING OF P3 MEMORY
DISK ADDRESS FOR OLD MODE TRANSFER
]
162. PTRDS UUO returns immediately with only a null in the returned string
if the PTY is not a display and is holding output.
163. Lowcore location 252 is now a pointer to the cell DQCNT which contains
the number of disk operations waiting to be started.
164. The PHUBIT bit (PHysical Uset BIT--0,,100) in the I/O status word for
device DSK or new-style UDP now causes the disk file's record offset
to be ignored by all UUOs except those that explicitly set or return
the record offset. With PHUBIT on, the UUOs USETI, USETO, UGETF, and
MTAPE (functions 0 and 16) take and/or return physical record numbers
instead of logical record numbers, and the UUOs LOOKUP and ENTER
return the physical size of the file rather than the logical size. In
other words, with PHUBIT ON record numbers are taken as PHYSICAL
(record offset ignored), and with PHUBIT OFF record numbers are taken
as LOGICAL (thus allowing some records at the beginning of the file to
have negative record numbers). MTAPE functions 20 and 21 (read and
set record offset) are not affected by this bit.
165. New ATTSEG error code (p86):
5 - Lower segment is too big (bigger than 128K)
166. Note that RENAME UUO does not do a CLOSE. The renamed file will
still be open after the RENAME.
167. New privilege bit LIVBIT (200000), can be enabled or disabled
by anyone (by the monitor commands ENABLE LIV and DISABLE LIV)
and prevents autologout.
168. Lowcore pointer update:
216 CORMAX maximum size of a user job in words
223 CHKBEG first checksummed location in the system
255 CORPTR This is address of a block of words describing
the state of the swapper. The first 4 words are
0, FINISH, FORCE, and FIT.
257 unused
261 unused
263 unused
265 SYSTOP This is the address of a word that contains the physical
address of the first word after the system (where free
storage begins).
266 CORTAB This is the address of a table that indicates the usage
of each page of core. The entries in this table are
9-bit bytes (0,,777000 bits). The entry for a given
page contains either 1)the number of the job occupying
the page, 2)a 101 if the page is part of the system,
3)a 103 if the page is non-existant, 4)a 105 if the
page is part of free storage, 5)a 110 if the page is a
page map, or 6)a 0 if the page is unused.
301 unused
325 MTRLST This is the address of the first word of a linked list
of meter control blocks used by the system when the
performance meter is in "background" mode.
326 SKIPP1 An I/O instruction to execute which will skip if it is
executed on processor 1 (P1).
327 SKIPP2 An I/O instruction to execute which will skip if it is
executed on processor 2 (P2).
330 LEBUF Offset within the DPY header for the line editor buffer
332 DDQSIZ This is the address of a word containing the size of the
queue of terminals waiting for data disk channels.
169. JBTSTS modifications.
WIPEJD (0,,200000) flushed
SHF (4000,,0) flushed
LOKSWP (4000,,0) swap job into locked core.
FBINP (0,,10000) flushed
FBEPR (0,,4000) flushed
FBJWT (0,,2000) flushed
170. All references to PDP-10 and PDP-6 should be fixed to use P1, P2 and P3.
171. ADC/DAC service has been flushed.
172. The following devices have been added. They are all on the PDP-6 (P3)
ADC,DAC,KIM,SAM,RTJ,FRM,SIX
All but SIX are dummy devices used for interlocking. SIX is a sharable
device [KS: insert description of UUOs here.]
SYSTEM CALLS FOR THE SIX (copied from SYS.PUB[SIX,MUS] on 17-Sep-77)
There are basically two different things you can do to the SIX through
the KL: send messages and do disk transfers. Each of these things has its
own formats and UUOs. Here is how it all works:
DEVICE SIX
There is a device that you can OPEN on the KL (in mode '17 only!) called
SIX. Many different people can have it open at once, but it only makes
sense for each person (job) to have it opened once. You do an OUTPUT
to it to send a message to the 6 and you do an INPUT to receive a message
from the 6. In addition, there is a call (an MTAPE) to find out if there
is a message waiting for you to read it, and an interrupt bit you can
set to receive a user-interrupt each time a new message comes in.
The interrupt bit is called INTSIX and is the 40000 bit (bit 21) in the
right half of the interrupt word. See the chapter on the user interrupt
system in the UUO manual for how to use this bit.
When you CLOSE or RELEASE the device SIX, the system sends out an MCLRJOB
message automatically. This will clear everything the SIX knows about you,
will release any buffers you have claimed, will stop the real-time job if
you have initialized it, etc etc etc.
The exact monitor calls are as follows:
OUTPUT CHN,ADDR
ADDR: IOWD WD,MA
This is the standard system OUTPUT UUO. It takes a single IOWD, not an IO command
list. This IOWD points to a single message. The first word (or the first
two words if it is a multiple-word message) must be in the message
header format described before. The system will deposit the sequence number
it assigns your message into the second word of the message (if any). The
message will be sent out (essentially) immediately. The maximum message
length is 1024 words. Anything longer than this must be broken up into 1K
pieces.
INPUT CHN,ADDR
ADDR: IOWD WD,MA
This is the standard system INPUT UUO. Likewise, it takes a single IOWD, not
an IO command list. This IOWD points to a place where a single message will
be placed by the system. If there are no messages there for you, this UUO
will wait until one comes in (or forever if no messages come in). You will
only get messages that are specifically directed to your job. Generally this
will not happen unless you do something (send a message to the 6) to make
it send you messages. If the IOWD you give is not big enough to hold the
message, you will only get as much of it as will fit.
MTAPE CHN,ADDR
<Failure return> ; Meaning of this return depends on function
<Success return>
ADDR: <Function code>
<Some data may be returned here>
There are only two legal codes right now. Code=0 means "skip if anything
in input list for me". It returns you in ADDR+1 the length (total length,
including header) of the next message in your input queue. It skips if
there is anything in your input list and it does not skip if your input
list is empty (that is, if your next INPUT UUO would have to wait).
Code=1 means wait for something to come into your input list, then return
its length in ADDR+1. It never skips.
DISK TRANSFERS
Disk transfers to the 6 memory operate much the way that normal
disk transfers do, except that they take special monitor calls, and
that the error correction is not done for you. The ECC (error correction
code) bytes are returned to you and you have to send them to the 6 using
the MECC message.
The disk must be open in mode 17 (dump mode). You will get an illegal UUO
from the following MTAPEs if it is not open in mode 17.
MTAPE CHN,ADDR
ADDR: SIXBIT /GODMOD/
24 ; Code for read, 25 for write
IOWD WC,MA ; Memory address relative to 6 memory
ECCADR ; Address (in your core image) where ECC data goes
ECCWD1
ECCWD2 ; ECC status words
BLOCK,,TRACK ; Only relevant on old format UDPs
This is how you read data from the disk into the 6 memory. You give an IOWD,
just like any other disk transfer (only dump mode, mode '17 is legal), only
the memory address you give in this IOWD refers to an absolute location in
the 6 memory, of which there is roughly 64K. The ECC data itself is two
words per entry. There may be up to 19 entries, so that your table of
the ECC data (which starts at location ECCADR) must be at least 38 words long.
Of these two words of data for each error, they are decoded as follows:
WORD 1 BYTE (12) BYTEC (24) BITS
BITS PATTERN NAME INTERPRETATION
---------------------------------------------------------------------------
0:11 777700,,0 BYTEC Byte number within ailing record of bad byte
12:35 77,,777777 BITS 3 ECC bytes to be XORed with the data
WORD 2 -WC,,P3ADDR
The first word gives the byte number within the ailing block of the first
bad byte, and the 3 ECC bytes to be XORed in with the data to make the
correction. The next word gives in the right half the absolute address
in the 6 memory of the first word (byte) of the ailing record. Thus you take
this word and start XORing bytes at BYTEC bytes into this record. The only
pecularity is the way the channel packs bytes to a word (THIS IS GOING
TO CHANGE!!!). The channel packs 9 bytes into 2 PDP-6 words in the following
manner:
***************************************************************
* * * * * *
* BYTE 0 * BYTE 1 * BYTE 2 * BYTE 3 * BYTE 4A *
* * * * * *
***************************************************************
***************************************************************
* * * * * *
* BYTE 5 * BYTE 6 * BYTE 7 * BYTE 8 * BYTE 4B *
* * * * * *
***************************************************************
BITS PATTERN NAME INTERPRETATION
---------------------------------------------------------------------------
***WORD 1***
0:7 776000,,0 BYTE0 Entire byte 0
8:15 1774,,0 BYTE1 Entire byte 1
16:23 3,,770000 BYTE2 Entire byte 2
24:31 7760 BYTE3 Entire byte 3
32:35 17 BYTE4a High-order bits of byte 4
***WORD 2***
0:7 776000,,0 BYTE5 Entire byte 5
8:15 1774,,0 BYTE6 Entire byte 6
16:23 3,,770000 BYTE7 Entire byte 7
24:31 7760 BYTE8 Entire byte 8
32:35 17 BYTE4b Low-order bits of byte 4
Thusly, the high-order 4 bits of byte 4 go into the tail of the first word,
and the low-order 4 bits of byte four go into the tail of the second word.
So, if you decide you have to do this error correction yourself,
you have to decide first which word pair it is in, then figure out
what byte within the word pair it is, and start XORing. Luckily, the
6 subsystem will do this for you if you just send the MECC message.
ECCWD1 is set to various things describing the state of the transfer. If
the left half is zero, then no errors occurred. If there were
less than 19 errors, then the transfer is complete. In this case, the
ECCWD1 will be -N,,ADRS where ADRS is the first unused location in the
error correction data table (ECCADR) and -N is the number of words in
this 38 word table that are remaining. If the Left half of ECCWD1 is exactly
1, then the transfer is complete: there were more than 19 errors over
the transfer, and some ECC information was lost. You got corrections for
the first 19 errors, but then ECCWD2 will be the first absolute address in the 6
memory of the first record whose ECC information was lost. This ECC information
should be shipped out and the remainder of the transfer should be retried.
To retry, you will have to know how the addresses map into blocks and records.
For the regular disk and the new-style UDPs, it is very simple. There are
128 words to each record. For old-format UDPs, it is a little more complicated,
because you must give the disk address in terms of the track number and the
record number within that track (see the UUO manual). In old-format UDPs, there
are 19 records per track. The first record is 32 words long and every succeeding
record is 128 words long. Thus the length of the entire track is 32+18*128.
MTAPE CHN,ADDR
ADDR: SIXBIT /GODMOD/
25 ; Code for write
IOWD WC,MA ; Memory address relative to 6 memory
BLOCK,,TRACK ; Only relevant on old format UDPs
Since there can be no errors on output (according to the disk manual), there
is no need for ECC. Thusly, it is much simpler to write from the 6 memory.
Things should be pretty self-explanatory by this point.
173.
.FSLIMIT:
The LOCK UUO implementation has been changed. The organization of core
is as follows: SYSTEM, FREE STORAGE, USERS. It does not matter where
the 256K word boundary is, as long as it is after the end of free storage.
The end of the system is marked by SYSTOP and the end of free storage
is marked by FSTOP (SYSPAG and FSPAG are page rather than word versions
of the same values). User core is everything after FSTOP. If free storage
needs to expand, then the user at FSTOP is swapped out. If a job were
locked in core at FSTOP he might get swapped out. To get around this,
user core is divided into two regions, high and low, which are exactly
the same, except that locked jobs are only in the high region. The
dividing line between the high and low regions is called FSLIMIT and
is set big enough so that free storage will never get that big. The
process of locking a job in core involves first checking to see if
it is entirely in the high region. If it is, the JLOCK bit is set in
JBTSTS and the job is considered locked. If not, then the job is swapped
out and the LOKSWP bit is set instead. This bit indicates to the swapper
that the job must be swapped into the high region. The job will be
swapped in when there is enough high region core available for it and
then the LOKSWP bit will be turned off and the JLOCK bit turned on.
174. If the 1000 bit (RAQBIT) is set in the device status word for the disk,
then when an ENTER is done to go into read-alter mode, the dates and
times from the ENTER block will be ignored and the current date will
NOT be written in the file for the last written and last referenced fields.
In fact, the file will not be changed (written) at ENTER time at all.
Programs that enter huge files in read-alter mode should set this bit to
save time and disk ops.
175. More TTYSET functions have been added. See UUO.ME[S,DOC].
176. BEEP and ADSMAP UUOs affect the "responsible TTY".
[ALL ENTRIES BEFORE THIS HAVE BEEN INCLUDED IN UUO MANUAL, THIRD EDITION.]
177. TTYSET function 17 (get responsible TTY) returns -1 if no TTY
is responsible. Also, if you look in the system (eg, via PEEK
or SETPR2) to find the terminal responsible for some TTY line,
a value of 12 (TTY12) for the responsible terminal really means
that no one is responsible for the particular TTY line.
178. A beep to a (responsible) non-ARPA PTY is a no-op.
179. Somehow this didn't make it into the third edition:
The SUPSOM bit (0,,1000) in the fourth word of a SETACT UUO
activation table suppresses the CONTROL and META bits on all
characters whose individual character bits are not on in the
activation table. This means that the activation table's
character bits are used for two purposes--in special activation
mode and in SUPSOM mode--but these two modes are not expected
to be in use at the same time. If SUPEOL is on, it takes
precedence over SUPSOM.
180. Error code 7 (GMM) to an IMP MTAPE means Gender MisMatch; ie, an
attempt to connect two like-gendered sockets together. Odd sockets
may only be connected to even sockets and vice versa.
181. XGP intercharacter spacing ('177 '1 '50 ICS) is now implemented.
It takes one 7-bit byte as the new value for intercharacter
spacing. The intercharacter spacing is set to zero when you INIT
the XGP, but is not reset to zero at any other time. The
intercharacter spacing value is the (positive) number of columns by
which the X-position is incremented after each normal text
character is printed (after the X-adjustment for character width).
It is possible that use of this feature may generate lines that are
too complex for XGPSER to print (usual warning).
182. The system now allows up to =128 fonts. Soon the font compiler
will too. (Until then, wait.)
183. XGP MTAPE 7 is just like XGP MTAPE 1 (compiles a font) except that
a four-word table follows the font identification number to specify
which characters are to be compiled. The format of this 4-word
table will be explained after the font compiler has been made to
understand it. (Until then, wait again.)
184. XGPUUO opcode 4 from the system to the Font Compiler is just like
opcode 2 except that words 5 through 10 (octal) of the data block
contain the four words from the user specifying which characters
are to be compiled.
185. XGP ESCAPE 5 selects the font specified by the following 7-bit byte
(e.g., '177 '5 FONT).